{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Welcome to eht-imaging! v 1.2.4 \n",
      "\n"
     ]
    }
   ],
   "source": [
    "import ehtim as eh"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Loading text image:  ../models/avery_sgra_eofn.txt\n"
     ]
    }
   ],
   "source": [
    "# Load in example image and array\n",
    "im = eh.image.load_txt('../models/avery_sgra_eofn.txt')\n",
    "eht = eh.array.load_txt('../arrays/EHT2017.txt')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Generating empty observation file . . . \n",
      "Producing clean visibilities from image with nfft FT . . . \n",
      "Adding gain + phase errors to data and applying a priori calibration . . . \n",
      "   Applying atmospheric phase corruption: phasecal-->False\n",
      "Adding thermal noise to data . . . \n",
      "Building NX table\n"
     ]
    }
   ],
   "source": [
    "# create example observation uvfits file\n",
    "tint_sec = 5\n",
    "tadv_sec = 600\n",
    "tstart_hr = 0\n",
    "tstop_hr = 24\n",
    "bw_hz = 4e9\n",
    "obs = im.observe(eht, tint_sec, tadv_sec, tstart_hr, tstop_hr, bw_hz,\n",
    "                 sgrscat=False, ampcal=True, phasecal=False)\n",
    "obs.save_uvfits('../../example_survey_obs.uvfits')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'ALMA': 0.1, 'LMT': 0.1, 'PV': 0.1, 'APEX': 0.1, 'SMA': 0.1, 'SMT': 0.1, 'SPT': 0.1, 'JCMT': 0.1}\n"
     ]
    }
   ],
   "source": [
    "# create a mock SEFD error budget for this array\n",
    "sites = list(obs.tkey.keys())\n",
    "SEFD_errs = {}\n",
    "for site in sites:\n",
    "    SEFD_errs[site] = 0.1\n",
    "\n",
    "print(SEFD_errs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'infile': '../../example_survey_obs.uvfits', 'outfile_base': 'example_survey', 'outpath': '../../example_survey_output/', 'ground_truth_img': 'None', 'save_imgsums': False, 'save_uvfits': True, 'save_pdf': False, 'save_stats': True, 'save_caltab': True, 'nproc': -1, 'backend': 'multiprocessing', 'ttype': 'fast', 'overwrite': True, 'selfcal': True, 'gaintol': [0.02, 0.2], 'niter_static': 2, 'blurfrac': 1, 'maxit': 100, 'stop': 0.0001, 'fov': 128, 'npixels': 64, 'reverse_taper_uas': 5, 'uv_zblcut': 100000000.0, 'SEFD_error_budget': {'ALMA': 0.1, 'LMT': 0.1, 'PV': 0.1, 'APEX': 0.1, 'SMA': 0.1, 'SMT': 0.1, 'SPT': 0.1, 'JCMT': 0.1}}\n"
     ]
    }
   ],
   "source": [
    "# create a dict of non-varying imaging parameters, such as filenames\n",
    "# see a full list of fixed parameters in the docs\n",
    "params_fixed = eh.survey.create_params_fixed(infile='../../example_survey_obs.uvfits',\n",
    "                                            outfile_base='example_survey',\n",
    "                                            outpath='../../example_survey_output/',\n",
    "                                            nproc=-1, # use all available cores, can be changed\n",
    "                                            overwrite=True,\n",
    "                                            niter_static=2,\n",
    "                                            SEFD_error_budget= SEFD_errs,\n",
    "                                            ttype='fast')\n",
    "\n",
    "print(params_fixed)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>zbl</th>\n",
       "      <th>sys_noise</th>\n",
       "      <th>avg_time</th>\n",
       "      <th>prior_fwhm</th>\n",
       "      <th>sc_phase</th>\n",
       "      <th>xdw_phase</th>\n",
       "      <th>sc_ap</th>\n",
       "      <th>xdw_ap</th>\n",
       "      <th>amp</th>\n",
       "      <th>cphase</th>\n",
       "      <th>logcamp</th>\n",
       "      <th>simple</th>\n",
       "      <th>l1</th>\n",
       "      <th>tv</th>\n",
       "      <th>tv2</th>\n",
       "      <th>flux</th>\n",
       "      <th>epsilon_tv</th>\n",
       "      <th>i</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.6</td>\n",
       "      <td>0.00</td>\n",
       "      <td>scan</td>\n",
       "      <td>50</td>\n",
       "      <td>0</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1.000000e-10</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.6</td>\n",
       "      <td>0.01</td>\n",
       "      <td>scan</td>\n",
       "      <td>50</td>\n",
       "      <td>0</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1.000000e-10</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.7</td>\n",
       "      <td>0.00</td>\n",
       "      <td>scan</td>\n",
       "      <td>50</td>\n",
       "      <td>0</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1.000000e-10</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.7</td>\n",
       "      <td>0.01</td>\n",
       "      <td>scan</td>\n",
       "      <td>50</td>\n",
       "      <td>0</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1.000000e-10</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   zbl sys_noise avg_time prior_fwhm sc_phase xdw_phase sc_ap xdw_ap  amp  \\\n",
       "0  0.6      0.00     scan         50        0        10     0      1  0.2   \n",
       "1  0.6      0.01     scan         50        0        10     0      1  0.2   \n",
       "2  0.7      0.00     scan         50        0        10     0      1  0.2   \n",
       "3  0.7      0.01     scan         50        0        10     0      1  0.2   \n",
       "\n",
       "  cphase logcamp simple l1 tv tv2 flux    epsilon_tv  i  \n",
       "0      1       1      1  1  1   1    1  1.000000e-10  0  \n",
       "1      1       1      1  1  1   1    1  1.000000e-10  1  \n",
       "2      1       1      1  1  1   1    1  1.000000e-10  2  \n",
       "3      1       1      1  1  1   1    1  1.000000e-10  3  "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# create a DataFrame of parameters to be surveyed over\n",
    "psets = eh.survey.create_survey_psets(zbl=[0.6,0.7], sys_noise=[0,0.01], prior_fwhm=[50])\n",
    "display(psets)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Loading uvfits:  ../../example_survey_obs.uvfits\n",
      "no IF in uvfits header!\n",
      "POLREP_UVFITS: circ\n",
      "Number of uvfits Correlation Products: 4\n",
      "Warning! Specified flux is < 80% of maximum visibility amplitude!\n",
      "Initializing imager data products . . .\n",
      "U-V flagged 125/1030 visibilities\n",
      "U-V flagged 905/1030 visibilities\n",
      "==============================\n",
      "Imager run 1 \n",
      "Warning! Specified flux is < 80% of maximum visibility amplitude!\n",
      "time: 4.248440 s\n",
      "J: 97.889630\n",
      "chi2_amp : 188.42 chi2_cphase : 37.40 chi2_logcamp : 11.76 \n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT\n",
      "==============================\n",
      "==============================\n",
      "Imager run 2 \n",
      "Warning! Specified flux is < 80% of maximum visibility amplitude!\n",
      "time: 4.167313 s\n",
      "J: 90.334988\n",
      "chi2_amp : 211.27 chi2_cphase : 22.08 chi2_logcamp : 14.51 \n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT\n",
      "==============================\n",
      "No stations specified in self cal: defaulting to calibrating all stations!\n",
      "Computing the Model Visibilities with fast Fourier Transform...\n",
      "Producing clean visibilities from image with fast FT . . . \n",
      "Not Using Multiprocessing\n",
      "Scan 106/107 : [----------------------------- ]99%\n",
      "self_cal time: 11.644029 s\n",
      "U-V flagged 125/1030 visibilities\n",
      "U-V flagged 905/1030 visibilities\n",
      "Updated self.amp: no averaging\n",
      "Updated self.amp: avg_time 0.000000 s\n",
      "\n",
      "Adding a 1.7372112467451863 Jy circular Gaussian of FWHM size 1303.9269657417408 uas\n",
      "No stations specified in self cal: defaulting to calibrating all stations!\n",
      "Computing the Model Visibilities with fast Fourier Transform...\n",
      "Producing clean visibilities from image with fast FT . . . \n",
      "Not Using Multiprocessing\n",
      "Scan 106/107 : [----------------------------- ]99%\n",
      "self_cal time: 12.742369 s\n",
      "Building NX table\n",
      "No NX table in saved uvfits\n",
      "U-V flagged 125/1030 visibilities\n",
      "U-V flagged 905/1030 visibilities\n",
      "No stations specified in self cal: defaulting to calibrating all stations!\n",
      "Computing the Model Visibilities with fast Fourier Transform...\n",
      "Producing clean visibilities from image with fast FT . . . \n",
      "Not Using Multiprocessing\n",
      "Scan 106/107 : [----------------------------- ]99%\n",
      "self_cal time: 16.189591 s\n",
      "U-V flagged 125/1030 visibilities\n",
      "U-V flagged 905/1030 visibilities\n"
     ]
    }
   ],
   "source": [
    "# to run only a single pset, create an instance of the ParameterSet class and use the function run()\n",
    "# should take ~1 minute to run\n",
    "pset = dict(psets.iloc[0])\n",
    "\n",
    "ps = eh.survey.ParameterSet(pset, params_fixed)\n",
    "ps.run()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# display output image\n",
    "# won't necessarily be good as the default selection of hyperparameters is not optimized for anything\n",
    "ps.im_out.display();"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "initializing paramsurvey multiprocessing backend\n",
      "initializing multiprocessing pool with 7 processes\n",
      "paramsurvey.map start time 20221129-165457\n",
      "paramsurvey.map pset count 4, pset columns ['zbl', 'sys_noise', 'avg_time', 'prior_fwhm', 'sc_phase', 'xdw_phase', 'sc_ap', 'xdw_ap', 'amp', 'cphase', 'logcamp', 'simple', 'l1', 'tv', 'tv2', 'flux', 'epsilon_tv', 'i']\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Welcome to eht-imaging! v 1.2.4 \n",
      "\n",
      "Loading uvfits:  ../../example_survey_obs.uvfits\n",
      "no IF in uvfits header!\n",
      "POLREP_UVFITS: circ\n",
      "Number of uvfits Correlation Products: 4\n",
      "Warning! Specified flux is < 80% of maximum visibility amplitude!\n",
      "Initializing imager data products . . .\n",
      "U-V flagged 125/1030 visibilities\n",
      "U-V flagged 905/1030 visibilities\n",
      "==============================\n",
      "Imager run 1 \n",
      "Warning! Specified flux is < 80% of maximum visibility amplitude!\n",
      "time: 4.751679 s\n",
      "J: 70.631814\n",
      "chi2_amp : 144.78 chi2_cphase : 23.55 chi2_logcamp : 8.37 \n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT\n",
      "==============================\n",
      "==============================\n",
      "Imager run 2 \n",
      "Warning! Specified flux is < 80% of maximum visibility amplitude!\n",
      "time: 4.803640 s\n",
      "J: 59.472611\n",
      "chi2_amp : 145.98 chi2_cphase : 9.25 chi2_logcamp : 9.47 \n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT\n",
      "==============================\n",
      "No stations specified in self cal: defaulting to calibrating all stations!\n",
      "Computing the Model Visibilities with fast Fourier Transform...\n",
      "Producing clean visibilities from image with fast FT . . . \n",
      "Not Using Multiprocessing\n",
      "Scan 001/107 : [                              ]0%Welcome to eht-imaging! v 1.2.4 \n",
      "\n",
      "Loading uvfits:  ../../example_survey_obs.uvfits\n",
      "no IF in uvfits header!\n",
      "POLREP_UVFITS: circ\n",
      "Number of uvfits Correlation Products: 4\n",
      "Warning! Specified flux is < 80% of maximum visibility amplitude!\n",
      "Initializing imager data products . . .\n",
      "U-V flagged 125/1030 visibilities\n",
      "U-V flagged 905/1030 visibilities\n",
      "==============================\n",
      "Imager run 1 \n",
      "Warning! Specified flux is < 80% of maximum visibility amplitude!\n",
      "time: 4.807395 s\n",
      "J: 84.648618\n",
      "chi2_amp : 161.44 chi2_cphase : 30.55 chi2_logcamp : 11.39 \n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT\n",
      "==============================\n",
      "==============================\n",
      "Imager run 2 \n",
      "Warning! Specified flux is < 80% of maximum visibility amplitude!\n",
      "time: 4.827927 s\n",
      "J: 75.180081\n",
      "chi2_amp : 174.25 chi2_cphase : 18.07 chi2_logcamp : 11.50 \n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT\n",
      "==============================\n",
      "No stations specified in self cal: defaulting to calibrating all stations!\n",
      "Computing the Model Visibilities with fast Fourier Transform...\n",
      "Producing clean visibilities from image with fast FT . . . \n",
      "Not Using Multiprocessing\n",
      "Scan 000/107 : [                              ]0%Welcome to eht-imaging! v 1.2.4 \n",
      "\n",
      "Loading uvfits:  ../../example_survey_obs.uvfits\n",
      "no IF in uvfits header!\n",
      "POLREP_UVFITS: circ\n",
      "Number of uvfits Correlation Products: 4\n",
      "Warning! Specified flux is < 80% of maximum visibility amplitude!\n",
      "Initializing imager data products . . .\n",
      "U-V flagged 125/1030 visibilities\n",
      "U-V flagged 905/1030 visibilities\n",
      "==============================\n",
      "Imager run 1 \n",
      "Warning! Specified flux is < 80% of maximum visibility amplitude!\n",
      "time: 4.807775 s\n",
      "J: 97.889630\n",
      "chi2_amp : 188.42 chi2_cphase : 37.40 chi2_logcamp : 11.76 \n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT\n",
      "==============================\n",
      "==============================\n",
      "Imager run 2 \n",
      "Warning! Specified flux is < 80% of maximum visibility amplitude!\n",
      "time: 4.832875 s\n",
      "J: 90.334988\n",
      "chi2_amp : 211.27 chi2_cphase : 22.08 chi2_logcamp : 14.51 \n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT\n",
      "==============================\n",
      "No stations specified in self cal: defaulting to calibrating all stations!\n",
      "Computing the Model Visibilities with fast Fourier Transform...\n",
      "Producing clean visibilities from image with fast FT . . . \n",
      "Not Using Multiprocessing\n",
      "Scan 003/107 : [                              ]2%Welcome to eht-imaging! v 1.2.4 \n",
      "\n",
      "Loading uvfits:  ../../example_survey_obs.uvfits\n",
      "no IF in uvfits header!\n",
      "POLREP_UVFITS: circ\n",
      "Number of uvfits Correlation Products: 4\n",
      "Warning! Specified flux is < 80% of maximum visibility amplitude!\n",
      "Initializing imager data products . . .\n",
      "U-V flagged 125/1030 visibilities\n",
      "U-V flagged 905/1030 visibilities\n",
      "==============================\n",
      "Imager run 1 \n",
      "Warning! Specified flux is < 80% of maximum visibility amplitude!\n",
      "time: 4.903839 s\n",
      "J: 83.146094\n",
      "chi2_amp : 165.80 chi2_cphase : 30.46 chi2_logcamp : 9.46 \n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT\n",
      "==============================\n",
      "==============================\n",
      "Imager run 2 \n",
      "Warning! Specified flux is < 80% of maximum visibility amplitude!\n",
      "time: 4.949486 s\n",
      "J: 75.069150\n",
      "chi2_amp : 180.89 chi2_cphase : 17.38 chi2_logcamp : 11.85 \n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT\n",
      "==============================\n",
      "No stations specified in self cal: defaulting to calibrating all stations!\n",
      "Computing the Model Visibilities with fast Fourier Transform...\n",
      "Producing clean visibilities from image with fast FT . . . \n",
      "Not Using Multiprocessing\n",
      "Scan 106/107 : [----------------------------- ]99%\n",
      "self_cal time: 8.881100 s\n",
      "U-V flagged 125/1030 visibilities\n",
      "U-V flagged 905/1030 visibilities\n",
      "Updated self.amp: no averaging\n",
      "Updated self.amp: avg_time 0.000000 s\n",
      "\n",
      "Adding a 1.5951758445460071 Jy circular Gaussian of FWHM size 1303.9269657417408 uas\n",
      "No stations specified in self cal: defaulting to calibrating all stations!\n",
      "Computing the Model Visibilities with fast Fourier Transform...\n",
      "Producing clean visibilities from image with fast FT . . . \n",
      "Not Using Multiprocessing\n",
      "Scan 000/107 : [                              ]0%\n",
      "self_cal time: 8.789273 s\n",
      "U-V flagged 125/1030 visibilities\n",
      "U-V flagged 905/1030 visibilities\n",
      "Updated self.amp: no averaging\n",
      "Updated self.amp: avg_time 0.000000 s\n",
      "\n",
      "Adding a 1.7368294580613926 Jy circular Gaussian of FWHM size 1303.9269657417408 uas\n",
      "No stations specified in self cal: defaulting to calibrating all stations!\n",
      "Computing the Model Visibilities with fast Fourier Transform...\n",
      "Producing clean visibilities from image with fast FT . . . \n",
      "Not Using Multiprocessing\n",
      "Scan 027/107 : [-------                       ]25%\n",
      "self_cal time: 11.734197 s\n",
      "U-V flagged 125/1030 visibilities\n",
      "U-V flagged 905/1030 visibilities\n",
      "Updated self.amp: no averaging\n",
      "Updated self.amp: avg_time 0.000000 s\n",
      "\n",
      "Adding a 1.6157646035434894 Jy circular Gaussian of FWHM size 1303.9269657417408 uas\n",
      "No stations specified in self cal: defaulting to calibrating all stations!\n",
      "Computing the Model Visibilities with fast Fourier Transform...\n",
      "Producing clean visibilities from image with fast FT . . . \n",
      "Not Using Multiprocessing\n",
      "Scan 031/107 : [--------                      ]28%\n",
      "self_cal time: 13.418360 s\n",
      "U-V flagged 125/1030 visibilities\n",
      "U-V flagged 905/1030 visibilities\n",
      "Updated self.amp: no averaging\n",
      "Updated self.amp: avg_time 0.000000 s\n",
      "\n",
      "Adding a 1.7372112467451863 Jy circular Gaussian of FWHM size 1303.9269657417408 uas\n",
      "No stations specified in self cal: defaulting to calibrating all stations!\n",
      "Computing the Model Visibilities with fast Fourier Transform...\n",
      "Producing clean visibilities from image with fast FT . . . \n",
      "Not Using Multiprocessing\n",
      "Scan 106/107 : [----------------------------- ]99%\n",
      "self_cal time: 16.203956 s\n",
      "Building NX table\n",
      "No NX table in saved uvfits\n",
      "U-V flagged 125/1030 visibilities\n",
      "U-V flagged 905/1030 visibilities\n",
      "No stations specified in self cal: defaulting to calibrating all stations!\n",
      "Computing the Model Visibilities with fast Fourier Transform...\n",
      "Producing clean visibilities from image with fast FT . . . \n",
      "Not Using Multiprocessing\n",
      "Scan 002/107 : [                              ]1%\n",
      "self_cal time: 16.650900 s\n",
      "Building NX table\n",
      "No NX table in saved uvfits\n",
      "U-V flagged 125/1030 visibilities\n",
      "U-V flagged 905/1030 visibilities\n",
      "No stations specified in self cal: defaulting to calibrating all stations!\n",
      "Computing the Model Visibilities with fast Fourier Transform...\n",
      "Producing clean visibilities from image with fast FT . . . \n",
      "Not Using Multiprocessing\n",
      "Scan 033/107 : [---------                     ]30%\n",
      "self_cal time: 16.959041 s\n",
      "Building NX table\n",
      "No NX table in saved uvfits\n",
      "U-V flagged 125/1030 visibilities\n",
      "U-V flagged 905/1030 visibilities\n",
      "No stations specified in self cal: defaulting to calibrating all stations!\n",
      "Computing the Model Visibilities with fast Fourier Transform...\n",
      "Producing clean visibilities from image with fast FT . . . \n",
      "Not Using Multiprocessing\n",
      "Scan 007/107 : [-                             ]6%%\n",
      "self_cal time: 16.887405 s\n",
      "Building NX table\n",
      "No NX table in saved uvfits\n",
      "U-V flagged 125/1030 visibilities\n",
      "U-V flagged 905/1030 visibilities\n",
      "No stations specified in self cal: defaulting to calibrating all stations!\n",
      "Computing the Model Visibilities with fast Fourier Transform...\n",
      "Producing clean visibilities from image with fast FT . . . \n",
      "Not Using Multiprocessing\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Scan 106/107 : [----------------------------- ]99%"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "counter default_iowait, total 9s, mean 4.57s, counts 2\n",
      "counter default_iowait, 50%tile: 4.58s\n",
      "counter default_iowait, 90%tile: 4.61s\n",
      "counter default_iowait, 95%tile: 4.61s\n",
      "counter default_iowait, 99%tile: 4.61s\n",
      "counter default_wallclock, total 160s, mean 79.87s, counts 2\n",
      "counter default_wallclock, 50%tile: 79.87s\n",
      "counter default_wallclock, 90%tile: 80.38s\n",
      "counter default_wallclock, 95%tile: 80.38s\n",
      "counter default_wallclock, 99%tile: 80.38s\n",
      "default progress: total: 4, active: 0, finished: 4, failures: 0, exceptions: 0\n",
      "counter default_iowait, total 18s, mean 4.54s, counts 4\n",
      "counter default_iowait, 50%tile: 4.58s\n",
      "counter default_iowait, 90%tile: 4.61s\n",
      "counter default_iowait, 95%tile: 4.61s\n",
      "counter default_iowait, 99%tile: 4.61s\n",
      "counter default_wallclock, total 338s, mean 84.57s, counts 4\n",
      "counter default_wallclock, 50%tile: 80.38s\n",
      "counter default_wallclock, 90%tile: 90.11s\n",
      "counter default_wallclock, 95%tile: 90.11s\n",
      "counter default_wallclock, 99%tile: 90.11s\n",
      "/Users/nitikayadlapalli/opt/anaconda3/envs/py38/lib/python3.8/site-packages/pandas_appender/appender.py:117: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n",
      "  df = df.append(self._small, **self._append_kwargs)\n",
      "paramsurvey.map end time 20221129-165630\n",
      "paramsurvey.map returning results\n"
     ]
    }
   ],
   "source": [
    "# to run all parameter sets, use the run_survey function\n",
    "# should take ~1-2 minutes to run\n",
    "eh.survey.run_survey(psets, params_fixed)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
